<?php

namespace App\Models\PartTime;

use App\Models\Common\CollArea;
use App\Models\Common\CollOption;
use App\Models\Common\CollTown;
use App\Models\Company\CompanyBasic;
use Illuminate\Database\Eloquent\Model;

/**
 * 兼职工作Model
 * Class CompanyPartTimeJobs
 * @package App\Models\PartTime
 */
class PartTimeJobs extends Model
{
    //设置表的类型和表名
    protected $table = 'part_time_jobs';
    protected $primaryKey = 'id';
    protected $guarded = [];

    /**
     * 获取兼职类型名称
     * @return string
     */
    public function getTypeNameAttribute()
    {
        return CollOption::getOptionName($this->type_id, 'part_time_type');
    }

    /**
     * 获取兼职所属的公司名字
     * @return \Illuminate\Database\Eloquent\Relations\BelongsTo
     */
    public function companyBasic()
    {
        return $this->belongsTo(CompanyBasic::class, 'com_id');
    }

    /**
     * 获取省市区信息
     * @return string
     */
    public function getAreaAddressAttribute()
    {
        if (strlen($this->city_id) > 6) {
            return CollTown::getTownName($this->city_id);
        } else {
            return CollArea::getAreaAddress($this->city_id);
        }
    }

    /**
     * 获取市区信息
     * @return string
     */
    public function getCityAddressAttribute()
    {
        if (strlen($this->city_id) > 6) {
            return CollTown::getTownName($this->city_id);
        } else {
            return CollArea::getCityAddress($this->city_id);
        }
    }

    /**
     * 获取区信息
     * @return string
     */
    public function getAreaNameAttribute()
    {
        if (strlen($this->city_id) > 6) {
            return CollTown::getTownName($this->city_id);
        } else {
            return CollArea::getAreaName($this->city_id);
        }
    }

    /**
     * 获取兼职工作空闲时间列表
     * @return mixed
     */
    public function getFreeTimeListAttribute()
    {
        return PartTimeJobsFreeTime::where('bt_id', '=', $this->id)->first();
    }

    /**
     * 获取兼职有效期限字符串
     * @return string
     */
    public function getPtTimeStringAttribute()
    {
        switch ($this->long_term) {
            case '0':
                return $this->time_start . ' ~ ' . $this->time_end;
                break;
            case '1':
                return '长期兼职';
                break;
        }
    }

    /**
     * 获取性别要求名称
     * @return string
     */
    public function getSexNameAttribute()
    {
        switch ($this->sex) {
            case '0':
                return '不限';
                break;
            case '1':
                return '男';
                break;
            case '2':
                return '女';
                break;
        }
    }

    /**
     * 获取学历要求名称
     * @return string
     */
    public function getEducationNameAttribute()
    {
        if ($this->education == 0) {
            return '不限';
        } else {
            return CollOption::getOptionName($this->education, 'education');
        }
    }

    /**
     * 获取薪资计算单位名称
     * @return string
     */
    public function getSalaryUnitNameAttribute()
    {
        return CollOption::getOptionName($this->salary_unit, 'part_time_salary_unit');
    }

    /**
     * 薪资结算方式
     * @return string
     */
    public function getSalaryMethodNameAttribute()
    {
        return CollOption::getOptionName($this->salary_method, 'part_time_salary_method');
    }

    /**
     * 时间转换
     * @return false|string
     */
    public function getLastUpdateTimeAttribute()
    {
        return date('Y-m-d', strtotime($this->updated_at));
    }

    /**
     * 固定电话拆分成数组
     * @return array
     */
    public function getPhoneSplitAttribute()
    {
        $phoneArray = explode('-', trim($this->phone));//使用trim函数为了兼容老的数据(可以过几个版本删除此trim的函数)
        $count = count($phoneArray);
        $Array = [];
        switch ($count) {
            case 0;
                $Array[0] = '';
                $Array[1] = '';
                $Array[2] = '';
                break;
            case 1;//理论上不会出现此类情况
                $Array[0] = '';
                $Array[1] = $phoneArray[0];
                $Array[2] = '';
                break;
            case 2;
                $Array[0] = $phoneArray[0];
                $Array[1] = $phoneArray[1];
                $Array[2] = '';
                break;
            case 3;
                $Array[0] = $phoneArray[0];
                $Array[1] = $phoneArray[1];
                $Array[2] = $phoneArray[2];
                break;
        }
        return $Array;
    }

    /**
     * 固定号码展示(可以过几个版本删除此方法)
     * @return string
     */
    public function getPhoneAttribute($v)
    {
        return trim($v, '-');//使用trim函数为了兼容老的数据(可以过几个版本删除此方法)
    }
}